const LOGIN_USER_KEY = "loginUser";
const FIRST_LUNCH = "firstlunch";

const TESTUSER = {
  token: "5cb5d9573abe9M1555421527",
  sign: "S9bACYNrJ7mF9iJ6NOFmGFEc5PXeKsB8QYSxg4B5Pbex6GYELNIihAEgiw9AgwsOVkBE+qwsB3wWUSE2kvaRdw==",
};

const StorageUtil = {
  /**
   * 获取本地token
   */
  loadToken: () => {
    return new Promise((resolve, reject) => {
      global.storage
        .load({
          key: LOGIN_USER_KEY,
        })
        .then(ret => {
          global.hasLoggedin = true;
          global.token = ret.token;
          global.sign = ret.sign;
          resolve(ret.token);
        })
        .catch(err => {
          // 如果没有找到数据且没有sync方法，
          // 或者有其他异常，则在catch中返回
          console.warn(err.message);
          global.hasLoggedin = false;
          reject(Error("请先登录"));
        });
    });
  },
  /**
   */
  load: key => {
    return new Promise((resolve, reject) => {
      global.storage
        .load({
          key,
        })
        .then(ret => {
          resolve(ret);
        })
        .catch(err => {
          // 如果没有找到数据且没有sync方法，
          // 或者有其他异常，则在catch中返回
          reject(err);
        });
    });
  },

  /**
   * 清除本地用户信息
   * @param user
   */
  clearUser: () => {
    global.storage.remove({
      key: LOGIN_USER_KEY,
    });
    global.hasLoggedin = false;
    global.token = "";
    global.sign = "";
  },

  saveUser: user => {
    global.storage.save({
      key: LOGIN_USER_KEY, // 注意:请不要在key中使用_下划线符号!
      data: user,
      // 如果不指定过期时间，则会使用defaultExpires参数
      // 如果设为null，则永不过期
      expires: null,
    });
    global.hasLoggedin = true;
    global.token = user.token;
    global.sign = user.sign;
  },

  saveUserTest: () => {
    global.storage.save({
      key: LOGIN_USER_KEY, // 注意:请不要在key中使用_下划线符号!
      data: TESTUSER,
      // 如果不指定过期时间，则会使用defaultExpires参数
      // 如果设为null，则永不过期
      expires: null,
    });
    global.hasLoggedin = true;
    global.token = TESTUSER.token;
    global.sign = TESTUSER.sign;
  },
  /**
   *
   */
  save: (key, value) => {
    console.log("save", { key, value });
    global.storage.save({
      key, // 注意:请不要在key中使用_下划线符号!
      data: value,
      // 如果不指定过期时间，则会使用defaultExpires参数
      // 如果设为null，则永不过期
      expires: null,
    });
  },
  saveHasFirstLunch: () => {
    global.storage.save({
      key: FIRST_LUNCH, // 注意:请不要在key中使用_下划线符号!
      data: true,
      // 如果不指定过期时间，则会使用defaultExpires参数
      // 如果设为null，则永不过期
      expires: null,
    });
  },
  isFirstLunch: () => {
    return new Promise(resolve => {
      global.storage
        .load({
          key: FIRST_LUNCH,
        })
        .then(ret => {
          resolve(!ret);
        })
        .catch(err => {
          // 如果没有找到数据且没有sync方法，
          // 或者有其他异常，则在catch中返回
          resolve(true);
        });
    });
  },
};
export default StorageUtil;
